home *** CD-ROM | disk | FTP | other *** search
- /* SCSIFindDevices.h */
- /*
- * SCSIFindDevices.h
- * Copyright © 1992-94 Apple Computer Inc. All Rights Reserved.
- */
- /*
- * Include the O.S. files in a specific order to make sure that we have
- * a definition for the _SCSIAtomic trap.
- */
- #include <Traps.h>
- #ifndef _SCSIAtomic
- #define _SCSIAtomic 0xA089
- #endif
- /*
- * This uses the new "common" SCSI.h which is not yet in the public
- * header folders.
- */
- #include "SCSI.h"
-
- /*
- * This is a parameter block for SCSIFindNextDevice that contains the data shared
- * with the calling program and the internal state that the function needs to
- * sequence between each device. If SCSIFindNextDevice succeeds, the device
- * inquiry data is stored in the record.
- */
- struct SCSIFindDevicesRec {
- /* Public variables */
- DeviceIdent deviceID; /* <-> Bus/target/LUN */
- short maxLUN; /* -> Maximum logical units */
- Boolean isAsyncSCSIPresent; /* <- TRUE if SCSI Manager 4.3 */
- long refNum; /* Reserved for the caller */
- long actualInquirySize; /* <- data length in inquiry */
- struct SCSI_Inquiry_Data { /* <- Inquiry returns this */
- unsigned char devType; /* 0 Device type, */
- unsigned char devTypeMod; /* 1 Device type modifier */
- unsigned char version; /* 2 ISO/ECMA/ANSI version */
- unsigned char format; /* 3 Response data format */
- unsigned char length; /* 4 Additional Length */
- unsigned char reserved5; /* 5 Reserved */
- unsigned char reserved6; /* 6 Reserved */
- unsigned char flags; /* 7 Capability flags */
- unsigned char vendor[8]; /* 8-15 Vendor-specific */
- unsigned char product[16]; /* 16-31 Product id */
- unsigned char revision[4]; /* 32-35 Product revision */
- unsigned char vendorSpecific[20]; /* 36-55 Vendor stuff */
- unsigned char moreReserved[40]; /* 56-95 Reserved */
- } inquiry;
- /* Private variables */
- short state; /* Control overall operation */
- unsigned short lastHostBus; /* Host bus iteration limit */
- Boolean useAsynchSCSI; /* Is asynch ok on this bus? */
- unsigned short initiatorID; /* Host processor bus ID */
- unsigned short maxTargetID; /* Max target on this bus */
- short maxBusLUN; /* Max LUN on this bus */
- Boolean enableATN; /* Select with ATN on this bus? */
- unsigned long execIOPBSize; /* SCSIAction pb size */
- SCSIExecIOPB *scsiExecIOPB; /* Set on bus-by-bus basis */
- };
- typedef struct SCSIFindDevicesRec SCSIFindDevicesRec, *SCSIFindDevicesPtr;
- /*
- * Notes on the above:
- * Public variables:
- * deviceID This is the current SCSI device. If deviceID.bus == 0xFF
- * SCSIFindNextDevice will initialize itself.
- * maxLUN Set to zero to ignore logical units or seven to test
- * all targets for multiple logical units. Beware: some
- * devices fail miserably if a non-zero logical unit is
- * selected.
- * isAsyncSCSIPresent Set TRUE after the first call to SCSIFindNextDevice if
- * the asynchronous SCSI Manager (SCSI Manager 4.3) is
- * running.
- * actualInquirySize If the function succeeds, it returns the Device Inquiry
- * information in the inquiry field. actualInquirySize
- * is the length of the data that was returned.
- * inquiry This is the device information returned on success.
- * Private variables:
- * state This manages the overall code flow in the subroutine.
- * lastHostBus The highest host bus on this system (if asynch present)
- * useAsynchSCSI TRUE if the asynchronous SCSI Manager works on this bus
- * initiatorID The bus ID of the Macintosh. Normally 7
- * maxTargetID The maximum target bus ID on this host bus.
- * enableATN Enable "select with attention" if set. This works around
- * a bug on un-patched Quadra 660-av and 840-av systems.
- * execIOPBSize The size of the SCSI parameter block.
- * scsiExecIOPB A pointer to the SCSI parameter block.
- */
-
- /*
- * SCSIFindNextDevice:
- * Scan the SCSI bus(es) for the next device. This will scan all buses, all
- * targets, and all logical units in order. To initialize, set deviceID.bus to
- * 0xFF and maxLUN to zero or seven as needed.
- * SCSIFindNextDevice allocates memory.
- *
- * Return:
- * noErr The deviceID field contains the next SCSI device and
- * the inquiry structure contains device-specific information.
- * eofErr The last device has been found. This is a normal status.
- * other errors Something horrible happened, such as a memory error.
- * (If your application calls SCSIFindNextDevice after any
- * error status, it will start from the beginning.)
- */
- OSErr SCSIFindNextDevice(
- SCSIFindDevicesPtr scsiFindDevicesPtr
- );
-